	
	import {util} from '@/static/js/common.js';
	import {
		getLodop
	} from "utils/LodopFuncs.js"
	/**
	 * 打印纸配置
	 * 
	*/
	var Papers={
		list:[],//当前打印机的打印纸数组
		index:-1,//选中的打印纸索引
		height: 0,//自定义的打印纸高度 单位mm
		width: 0,//自定义的打印纸宽度 单位mm
		pagesCreateShow:false,//自定义纸张是否可见
		success:false,//是否就绪
	};
	/**
	 * 打印机配置
	 * 
	*/
	var Printer={
		list:[],
		index:-1,
	};
	var LODOP;
	
	
	/**
	 * 获取打印机索引
	 * 
	*/
	const GetPrinterIndex=()=>{
		return Printer.index
	}


	/**
	 * 打印初始化
	*/
	function printInit(item){
		if(!isNaN(parseFloat(item.data.count))==false || item.data.count<=0){
			return
		}
		util.get_request(
			{
				id:item.data.content,
				base64:true
			},
			(res)=>{
				Prnt_Oneform(true,item.data.count,res.msg,item.data.content)
			},
			(res)=>{
			},
			false,
			util.baseUrl.host + util.baseUrl.qrcodeUrl+'?type=test'
		);
	}
	/**
	 * 获取缓存宽高的记忆
	*/
	const getStorageInput=()=>{
		uni.getStorage({
			key:'position_height',
			success: (res) => {
				Papers.height = res.data
			}
		})
		uni.getStorage({
			key:'position_width',
			success: (res) => {
				Papers.width = res.data
			}
		})
	}
	/**
	 * 保存自定义纸张的宽高
	*/
	const inputElement=(type)=>{
		if(type =='position_height'){
			var value = Papers.height
		}else{
			var value = Papers.width
		}
		uni.setStorage({
			key: type,
			data: value,
			success: function () {
			}
		});
	}
	/**
	 * 此处应该是回调的
	 * 设置打印机打印纸缓存
	*/
	const gradeChange=(e)=>{
		Papers.index = e.detail.value

		checkPapers();
		uni.setStorage({
			key: 'print_position_Papers',
			data: Papers,
			success: function () {
			}
		});
	}

	/**
	 * 此处应该是回调的
	 * 设置打印机缓存
	*/
	const PrintersChange=(e)=>{
		uni.setStorage({
			key: 'position_PrintersValueKeyName',
			data: e.detail.value,
			success: function () {
			}
		});
		Printer.index = e.detail.value
		//获取纸张
		CreatePagSizeList(e.detail.value)
		checkPapers();
		
	}
	/**
	 * 检查是否选中的是自定义纸张，是的话就显示自定义宽高项
	*/	
	const checkPapers=()=>{
		Papers.pagesCreateShow = Papers.index==0 ? true : false
	}
	/**
	 * 获取缓存记忆
	 * 获取纸张、打印机都需要传递进去select的ID
	*/	
	const getStorage=()=>{
		//上次记忆的打印机
		CreatePrinterList();//获取打印机
		var index = uni.getStorageSync('position_PrintersValueKeyName')//获取记忆
		//判断是否有记忆;有的话旧设置记忆的打印机
		if( index==''){
			Printer.index = 0 
		}else{
			Printer.index = index 
		}

		CreatePagSizeList()//获取纸张
		
		var Paperss = uni.getStorageSync('print_position_Papers')//获取记忆
			
		if(Paperss.index){
			Papers.index = Paperss.index
		}else{
			Papers.index = 0
		}
		
		checkPapers();
	}
	/**
	 * 获取打印机列表
	*/
	const CreatePrinterList=()=>{
		var iPrinterCount = LODOP.GET_PRINTER_COUNT();
		var option = {}
		for(var i=0;i<iPrinterCount;i++){
			option = {}
			option.value = i;
			option.text = LODOP.GET_PRINTER_NAME(i);
			Printer.list.push(option)
		};	
		Printer.index = 0
	}
	/**
	 * 获取打印机纸张列表
	 * PrintIndex:当前选中的打印机序号
	*/
	const CreatePagSizeList=()=>{
		// LODOP = getLodop((erroe)=>{
		// },LODOP);
		
		Papers.list = []
		Papers.list.push({ value: 'CreateCustomPage', text: "自定义纸张" })
		
		var strPageSizeList = LODOP.GET_PAGESIZES_LIST(Printer.index,"|");
		var Options = strPageSizeList.split("|"); 
		
		Options.forEach(function(item,i){
			Papers.list.push({ value: item, text: item})
		})
		
		//默认
		//Papers.name = 0
		//Papers.pagesCreateShow = true
	}
		
	/**
	 * 判断当前LODOP是否就绪
	*/
	const checkLodop=(callFun)=>{
		var res = undefined;
		var TimerInit = setInterval(function() { //将计时器赋值给 TimerInit 
			res = getLodop();
			if (res.type==false) {
				if(res.clearInterval==true){
					//document.getElementById("onloadMsg").innerHTML = res.msg
					
					clearInterval(TimerInit) 
				}
				
			} else {
				clearInterval(TimerInit) 
				LODOP = res.data
				callFun();
			}
		}, 100);
	}

	/**
	 * 
	strPageName:所选纸张类型名，字符型。不同打印机所支持的纸张可能不一样，这里的名称同操作系统内打印机属性中的纸张名称，支持操作系统内的自定义纸张。
	关键字“CreateCustomPage”会按以上宽度和高度自动建立一个自定义纸张，所建立的纸张名固定为“LodopCustomPage”，多次建立则刷新该纸张的大小值。
	注：PageWidth、PageHeight 和strPageName都无效时，本函数对纸张大小不起作用，控件则采用所选打印机的默认纸张，但intOrient仍可起作用。
	实际打印时，控件按如下优先级顺序确定纸张大小：
	第1优先是打印维护里纸张属性（“本机自行定义纸张”）设置的纸张大小。
	第2优先是SET_PRINT_PAGESIZE指定的纸张大小； 
	第3优先是上次打印时在预览界面设置里选择的纸张类型；
	第4是按所选打印机的默认纸张； 
	*/
	const Prnt_Oneform=(PREVIEW=true,printCount,pngBase64,content)=>{	
		LODOP = getLodop().data; 
		//var LODOP = LODOP
		//设置纸张
		var pageSetting = {};
	
		if(Papers.list[Papers.index].text=="自定义纸张"){
			pageSetting.width    = parseFloat(Papers.width)
			pageSetting.height   = parseFloat(Papers.height)
			pageSetting.PageName = "CreateCustomPage";
			var qrCodeWidth      = pageSetting.width * 0.3; // 比如让二维码占纸张宽度的30%
			var qrCodeHeight     = qrCodeWidth; // 保持二维码为正方形

		}else{
			pageSetting.width    = 0
			pageSetting.height   = 0
			pageSetting.PageName = Papers.name;
			var qrCodeWidth      = 'auto'//二维码高度
			var qrCodeHeight     = qrCodeWidth; // 保持二维码为正方形
		}
		//------------------------------------end


		var strStyleCSS  = ""//"<head><link href='/static/css/print.css' type='text/css' rel='stylesheet'></head>";
		//var strBodyStyle = "<style>"+document.getElementById("style").innerHTML+"</style>";
		var strBodyStyle = ""
		var html = `<div id="printContent" style="display: flex;align-items: center;justify-content: space-between;width: 100%;height: 100%;box-sizing: border-box;font-family: Arial, sans-serif;"><div><img id="qrCodeImage" style="margin-right: 10px;width:${qrCodeWidth}mm;;height:${qrCodeHeight}mm" src="data:image/jpg;base64,${pngBase64}"></div><div style="font-weight: bold;font-size: 16px;">${content}</div></div>`
		var strFormHtml  = strStyleCSS + strBodyStyle + `<body>${html}</body>`;


		//动态设置纸张的方法，可以实现无间隔的连续打印输出
		LODOP.PRINT_INIT("");	
		//LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_样式风格");
		//设定打印纸张为固定纸张或自适应内容高，并设定相关大小值或纸张名及打印方向。
		LODOP.SET_PRINT_PAGESIZE(1,pageSetting.width,pageSetting.height,pageSetting.PageName);
		LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME","自定标签纸张");//对新建的纸张重命名
		
		//ADD_PRINT_HTM
		//LODOP.ADD_PRINT_TABLE("0","0","100%","100%",strFormHtml);
		//增加表格打印项（超文本模式）
		LODOP.ADD_PRINT_TABLE("0.1cm","0.1cm","RightMargin:0.1cm","BottomMargin:0.1cm",strFormHtml);
		//设置打印份数
		LODOP.SET_PRINT_COPIES(printCount)
		//指定打印机
		LODOP.SET_PRINTER_INDEX(Printer.index)
		if(PREVIEW==false){
			LODOP.PREVIEW();
		}else{
			LODOP.PRINT();
		}		
	}
	if(util.isIE() == false){
		
		//起动打印服务
		checkLodop(function(){
			Papers.success = true
			getStorage();//获取缓存记忆
		})
		getStorageInput()
	}else{
		util.showModal('提示','当前浏览器为IE浏览器，暂不支持运行')
	}
	export const print_position= { 
		Prnt_Oneform,
		checkLodop,
		CreatePagSizeList,
		CreatePrinterList,
		getStorage,
		checkPapers,
		PrintersChange,
		gradeChange,
		inputElement,
		getStorageInput,
		Papers,
		Printer,
		GetPrinterIndex,
		printInit,
	}